home *** CD-ROM | disk | FTP | other *** search
/ ftp.cs.arizona.edu / ftp.cs.arizona.edu.tar / ftp.cs.arizona.edu / icon / newsgrp / group98b.txt / 000041_icon-group-sender _Wed May 27 08:21:10 1998.msg < prev    next >
Internet Message Format  |  2000-09-20  |  9KB

  1. Return-Path: <icon-group-sender>
  2. Received: from kingfisher.CS.Arizona.EDU (kingfisher.CS.Arizona.EDU [192.12.69.239])
  3.     by baskerville.CS.Arizona.EDU (8.8.8/8.8.7) with SMTP id IAA03028
  4.     for <icon-group-addresses@baskerville.CS.Arizona.EDU>; Wed, 27 May 1998 08:21:10 -0700 (MST)
  5. Received: by kingfisher.CS.Arizona.EDU (5.65v4.0/1.1.8.2/08Nov94-0446PM)
  6.     id AA01621; Wed, 27 May 1998 08:21:04 -0700
  7. Message-Id: <356B9C3B.15DA6101@charlie.cns.iit.edu>
  8. Date: Tue, 26 May 1998 23:53:15 -0500
  9. From: "Thomas W. Christopher" <tc@charlie.cns.iit.edu>
  10. Organization: Illinois Institute of Technology
  11. X-Mailer: Mozilla 4.05 [en] (WinNT; I)
  12. Mime-Version: 1.0
  13. To: Guy Laden <guy@math.tau.ac.il>
  14. Cc: icon-group@baskerville.CS.Arizona.EDU
  15. Subject: Re: Writing compilers in Icon
  16. References: <199805222014.XAA02171@orion.math.tau.ac.il>
  17. Content-Type: multipart/mixed; boundary="------------D07FD781A7537D236717351D"
  18. Errors-To: icon-group-errors@optima.CS.Arizona.EDU
  19. Status: RO
  20. Content-Length: 8242
  21.  
  22. This is a multi-part message in MIME format.
  23. --------------D07FD781A7537D236717351D
  24. Content-Type: text/plain; charset=us-ascii
  25. Content-Transfer-Encoding: 7bit
  26.  
  27. I have found Icon quite pleasant for compiler writing, although not for
  28. production quality compilers. I use them for teaching.
  29.  
  30. See:   http://www.iit.edu/~tc/toolsfor.htm
  31.  
  32. I found generators a lot more useful for writing my parser generator
  33. than for writing compilers themselves.
  34.  
  35. I have used coexpressions for scanners, but I don't currently due to the
  36. difficulty of explaining it to students.
  37.  
  38. My parser uses string invocation of procedures. All the grammar symbols,
  39. including action symbols, are represented by strings in my parse tables. The
  40.  
  41. action symbols are the names of the semantic routines to call.
  42.  
  43. I'll attach a grammar for Icon that my LL(k) parser generator, tcllk, can
  44. handle.
  45.  
  46. If you pass it through:
  47.         iconx tcllk -p icon.grm
  48. you might be able to use the after-translation version of the grammar for
  49. recursive
  50. descent, although it's a lot easier to use my parser generator and parser.
  51.  
  52. A few suggestions for scanning tokens in Icon and passing them on to the
  53. parser:
  54. 1) queue up the tokens leaving the scanner before the parser sees them, use
  55. the
  56. queue to do (2) and (3);
  57. 2) remove duplicate ";" and end-of-line symbols;
  58. 3) remove end-of-line symbols preceeding or following symbols like "do",
  59. "then", "else";
  60. 4) fix the panic-mode error recovery to respond to an unexpected end-of-line
  61.  
  62. symbol by throwing it away without comment.
  63.  
  64. Guy Laden wrote:
  65.  
  66. > I noticed the newly announced implementation of Jcon is written in Icon.
  67. > I was wondering whether anybody can comment on how suitable they
  68. > find Icon for writing compilers? Do any of Icon's unique features
  69. > prove especially useful for this task? I'm wondering more about
  70. > generators and goal-directed evaluation; the built-in data-structures
  71. > are obviously useful.
  72. >
  73. > btw, does anybody have an Icon grammar they are willing to share
  74. > that is suitable for recursive descent parsing?
  75. >
  76. > Regards,
  77. > Guy.
  78.  
  79.  
  80.  
  81. --
  82. Thomas W. Christopher --------------------- tc@charlie.cns.iit.edu
  83. Associate Prof., Illinois Inst. of Tech.--- http://www.iit.edu/~tc
  84. Principal, Tools of Computing LLC.--------- http://www.toc-press.com
  85.  
  86.  
  87. --------------D07FD781A7537D236717351D
  88. Content-Type: application/x-unknown-content-type-grm_auto_file; name="icon.grm"
  89. Content-Transfer-Encoding: base64
  90. Content-Disposition: inline; filename="icon.grm"
  91.  
  92. c3RhcnQgOiBwcm9ncmFtLg0KcHJvZ3JhbSA9IGRlY2xhcmF0aW9uDQoJfCBkZWNsYXJhdGlv
  93. biBwcm9ncmFtDQoJLg0KZW9zID0gIjsiIHwgRU9MIC4NCmRlY2xhcmF0aW9uID0gbGlua19k
  94. ZWNsYXJhdGlvbg0KCXwgZ2xvYmFsX2RlY2xhcmF0aW9uDQoJfCByZWNvcmRfZGVjbGFyYXRp
  95. b24NCgl8IHByb2NlZHVyZV9kZWNsYXJhdGlvbg0KCS4NCmxpbmtfZGVjbGFyYXRpb24gPSAi
  96. bGluayIgbGlua19saXN0DQoJLg0KbGlua19saXN0ID0gZmlsZV9uYW1lDQoJfCBmaWxlX25h
  97. bWUgIiwiIGxpbmtfbGlzdA0KCS4NCmZpbGVfbmFtZSA9IGlkZW50aWZpZXINCgl8IHN0cmlu
  98. Z19saXRlcmFsDQoJLg0KZ2xvYmFsX2RlY2xhcmF0aW9uID0gImdsb2JhbCIgaWRlbnRpZmll
  99. cl9saXN0DQoJLg0KI2lkZW50aWZpZXJfbGlzdF9vcHQgPSBpZGVudGlmaWVyX2xpc3R8Lg0K
  100. aWRlbnRpZmllcl9saXN0ID0gaWRlbnRpZmllcg0KCXwgaWRlbnRpZmllcl9saXN0ICIsIiBp
  101. ZGVudGlmaWVyDQoJLg0KcmVjb3JkX2RlY2xhcmF0aW9uID0gDQoJICAicmVjb3JkIiBpZGVu
  102. dGlmaWVyICIoIiBmaWVsZF9saXN0X29wdCAiKSINCgkuDQpmaWVsZF9saXN0X29wdCA9IGZp
  103. ZWxkX2xpc3QNCgl8DQoJLg0KZmllbGRfbGlzdCA9IGZpZWxkX25hbWUNCgl8IGZpZWxkX2xp
  104. c3QgIiwiIGZpZWxkX25hbWUNCgkuDQpmaWVsZF9uYW1lID0gaWRlbnRpZmllcg0KCS4NCnBy
  105. b2NlZHVyZV9kZWNsYXJhdGlvbiA9DQoJICBwcm9jX2hlYWRlciBsb2NhbHNfb3B0IGluaXRp
  106. YWxfb3B0IGV4cHJlc3Npb25fc2VxdWVuY2UgImVuZCINCgkuDQpwcm9jX2hlYWRlciA9IA0K
  107. CSAgInByb2NlZHVyZSIgaWRlbnRpZmllciAiKCIgcGFyYW1ldGVyX2xpc3Rfb3B0ICIpIiBl
  108. b3MNCgkuDQpwYXJhbWV0ZXJfbGlzdF9vcHQgPSBwYXJhbWV0ZXJfbGlzdA0KCXwgDQoJLg0K
  109. cGFyYW1ldGVyX2xpc3QgPSBpZGVudGlmaWVyDQoJfCBpZGVudGlmaWVyICJbIiAiXSINCgl8
  110. IGlkZW50aWZpZXIgIiwiIHBhcmFtZXRlcl9saXN0DQoJLg0KbG9jYWxzX29wdCA9IGxvY2Fs
  111. cw0KCXwNCgkuDQpsb2NhbHMgPSBsb2NhbF9zcGVjaWZpY2F0aW9uIGlkZW50aWZpZXJfbGlz
  112. dA0KCXwgbG9jYWxfc3BlY2lmaWNhdGlvbiBpZGVudGlmaWVyX2xpc3QgZW9zIGxvY2Fscw0K
  113. CS4NCmxvY2FsX3NwZWNpZmljYXRpb24gPSAibG9jYWwiIA0KCXwgInN0YXRpYyINCgkuDQpp
  114. bml0aWFsX29wdCA9ICJpbml0aWFsIiBleHByZXNzaW9uIGVvcw0KCXwNCgkuDQpleHByZXNz
  115. aW9uX3NlcXVlbmNlID0gZXhwcmVzc2lvbl9vcHQNCgl8IGV4cHJlc3Npb25fc2VxdWVuY2Ug
  116. ZW9zIGV4cHJlc3Npb25fb3B0DQoJLg0KZXhwcmVzc2lvbl9vcHQgPSBleHByZXNzaW9uDQoJ
  117. fA0KCS4NCmV4cHJlc3Npb24gPQ0KCSAgImJyZWFrIiBleHByZXNzaW9uX29wdA0KCXwgImNy
  118. ZWF0ZSIgZXhwcmVzc2lvbg0KCXwgInJldHVybiIgZXhwcmVzc2lvbl9vcHQNCgkjfCAic3Vz
  119. cGVuZCIgZXhwcmVzc2lvbl9vcHQgZG9fY2xhdXNlX29wdA0KCXwgInN1c3BlbmQiIGV4cHJl
  120. c3Npb25fb3B0IHN1c3BlbmRfZG9fY2xhdXNlX29wdA0KCXwgImZhaWwiDQoJfCAibmV4dCIN
  121. Cgl8ICJjYXNlIiBleHByZXNzaW9uICJvZiIgInsiIGNhc2VfbGlzdCAifSINCgl8ICJpZiIg
  122. ZXhwcmVzc2lvbiAidGhlbiIgZXhwcmVzc2lvbiBlbHNlX2NsYXVzZV9vcHQNCgl8ICJyZXBl
  123. YXQiIGV4cHJlc3Npb24NCgkjfCAid2hpbGUiIGV4cHJlc3Npb24gZG9fY2xhdXNlX29wdA0K
  124. CSN8ICJ1bnRpbCIgZXhwcmVzc2lvbiBkb19jbGF1c2Vfb3B0DQoJI3wgImV2ZXJ5IiBleHBy
  125. ZXNzaW9uIGRvX2NsYXVzZV9vcHQNCgl8ICJ3aGlsZSIgZXhwcmVzc2lvbiB3aGlsZV9kb19j
  126. bGF1c2Vfb3B0DQoJfCAidW50aWwiIGV4cHJlc3Npb24gdW50aWxfZG9fY2xhdXNlX29wdA0K
  127. CXwgImV2ZXJ5IiBleHByZXNzaW9uIGV2ZXJ5X2RvX2NsYXVzZV9vcHQNCgl8IGV4cHIxDQoJ
  128. Lg0KI2RvX2NsYXVzZV9vcHQgPSAiZG8iIGV4cHJlc3Npb258Lg0Kc3VzcGVuZF9kb19jbGF1
  129. c2Vfb3B0ID0gImRvIiBleHByZXNzaW9ufC4NCndoaWxlX2RvX2NsYXVzZV9vcHQgPSAiZG8i
  130. IGV4cHJlc3Npb258Lg0KdW50aWxfZG9fY2xhdXNlX29wdCA9ICJkbyIgZXhwcmVzc2lvbnwu
  131. DQpldmVyeV9kb19jbGF1c2Vfb3B0ID0gImRvIiBleHByZXNzaW9ufC4NCg0KZWxzZV9jbGF1
  132. c2Vfb3B0ID0gImVsc2UiIGV4cHJlc3Npb24NCgl8DQoJLg0KY2FzZV9saXN0ID0gY2FzZV9j
  133. bGF1c2UNCgl8IGNhc2VfbGlzdCBlb3MgY2FzZV9jbGF1c2UNCgkuDQpjYXNlX2NsYXVzZSA9
  134. IGV4cHJlc3Npb24gIjoiIGV4cHJlc3Npb24NCgl8ICJkZWZhdWx0IiAiOiIgZXhwcmVzc2lv
  135. bg0KCS4NCmV4cHIxCT0gZXhwcjEgIiYiIGV4cHIyDQoJfCBleHByMg0KCS4NCmV4cHIyCT0g
  136. ZXhwcjIgIj8iIGV4cHIzDQoJfCBleHByMw0KCS4NCmV4cHIzCT0gICBleHByNCAiOj0iIGV4
  137. cHIzDQoJfCBleHByNCAiOj06IiBleHByMw0KCXwgZXhwcjQgIjwtIiBleHByMw0KCXwgZXhw
  138. cjQgIjwtPiIgZXhwcjMNCgl8IGV4cHI0IG9wX2FzZ24gZXhwcjMNCgl8IGV4cHI0DQoJLg0K
  139. ZXhwcjQJPSBleHByNCAidG8iIGV4cHI1DQoJfCBleHByNCAidG8iIGV4cHI1ICJieSIgZXhw
  140. cjUNCgl8IGV4cHI1DQoJLg0KZXhwcjUJPSBleHByNSAifCIgZXhwcjYNCgl8IGV4cHI2DQoJ
  141. Lg0KZXhwcjYJPSBleHByNiAiPCIgZXhwcjcNCgl8IGV4cHI2ICI8PSIgZXhwcjcNCgl8IGV4
  142. cHI2ICI9IiBleHByNw0KCXwgZXhwcjYgIj49IiBleHByNw0KCXwgZXhwcjYgIj4iIGV4cHI3
  143. DQoJfCBleHByNiAifj0iIGV4cHI3DQoJfCBleHByNiAiPDwiIGV4cHI3DQoJfCBleHByNiAi
  144. PDw9IiBleHByNw0KCXwgZXhwcjYgIj09IiBleHByNw0KCXwgZXhwcjYgIj4+PSIgZXhwcjcN
  145. Cgl8IGV4cHI2ICI+PiIgZXhwcjcNCgl8IGV4cHI2ICJ+PT0iIGV4cHI3DQoJfCBleHByNiAi
  146. PT09IiBleHByNw0KCXwgZXhwcjYgIn49PT0iIGV4cHI3DQoJfCBleHByNw0KCS4NCmV4cHI3
  147. CT0gZXhwcjcgInx8IiBleHByOA0KCXwgZXhwcjcgInx8fCIgZXhwcjgNCgl8IGV4cHI4DQoJ
  148. Lg0KZXhwcjgJPSBleHByOCAiKyIgZXhwcjkNCgl8IGV4cHI4ICItIiBleHByOQ0KCXwgZXhw
  149. cjggIisrIiBleHByOQ0KCXwgZXhwcjggIi0tIiBleHByOQ0KCXwgZXhwcjkNCgkuDQpleHBy
  150. OQk9IGV4cHI5ICIqIiBleHByMTANCgl8IGV4cHI5ICIvIiBleHByMTANCgl8IGV4cHI5ICIl
  151. IiBleHByMTANCgl8IGV4cHI5ICIqKiIgZXhwcjEwDQoJfCBleHByMTANCgkuDQpleHByMTAJ
  152. PSBleHByMTEgIl4iIGV4cHIxMA0KCXwgZXhwcjExDQoJLg0KZXhwcjExCT0gZXhwcjExICJc
  153. IiBleHByMTINCgl8IGV4cHIxMSAiQCIgZXhwcjEyDQoJfCBleHByMTEgIiEiIGV4cHIxMg0K
  154. CXwgZXhwcjEyDQoJLg0KZXhwcjEyCT0gIm5vdCIgZXhwcjEyDQoJfCAifCIgZXhwcjEyDQoJ
  155. fCAiISIgZXhwcjEyDQoJfCAiKiIgZXhwcjEyDQoJfCAiKyIgZXhwcjEyDQoJfCAiLSIgZXhw
  156. cjEyDQoJfCAiLiIgZXhwcjEyDQoJfCAiLyIgZXhwcjEyDQoJfCAiXCIgZXhwcjEyDQoJfCAi
  157. PSIgZXhwcjEyDQoJfCAiPyIgZXhwcjEyDQoJfCAifiIgZXhwcjEyDQoJfCAiQCIgZXhwcjEy
  158. DQoJfCAiXiIgZXhwcjEyDQoJfCBleHByMTMNCgkuDQpleHByMTMJPSAiKCIgZXhwcmVzc2lv
  159. bl9saXN0ICIpIg0KCXwgInsiIGV4cHJlc3Npb25fc2VxdWVuY2UgIn0iDQoJfCAiWyIgZXhw
  160. cmVzc2lvbl9saXN0ICJdIg0KCXwgZXhwcjEzICIuIiBmaWVsZF9uYW1lDQoJfCBleHByMTMg
  161. IigiIGV4cHJlc3Npb25fbGlzdCAiKSINCgl8IGV4cHIxMyAieyIgZXhwcmVzc2lvbl9saXN0
  162. ICJ9Ig0KCXwgZXhwcjEzICJbIiBzdWJzY3JpcHRfbGlzdCAiXSINCgl8IGlkZW50aWZpZXIN
  163. Cgl8IGtleXdvcmQNCgl8IGxpdGVyYWwNCgkuDQoNCmV4cHJlc3Npb25fbGlzdCA9IGV4cHJl
  164. c3Npb25fb3B0DQoJfCBleHByZXNzaW9uX2xpc3QgIiwiIGV4cHJlc3Npb25fb3B0DQoJLg0K
  165. c3Vic2NyaXB0X2xpc3QgPSBzdWJzY3JpcHQNCgl8IHN1YnNjcmlwdF9saXN0ICIsIiBzdWJz
  166. Y3JpcHQNCgkuDQpzdWJzY3JpcHQgPSBleHByZXNzaW9uDQoJfCBleHByZXNzaW9uICI6IiBl
  167. eHByZXNzaW9uDQoJfCBleHByZXNzaW9uICIrOiIgZXhwcmVzc2lvbg0KCXwgZXhwcmVzc2lv
  168. biAiLToiIGV4cHJlc3Npb24NCgkuDQprZXl3b3JkID0gIiYiIGlkZW50aWZpZXINCgkuDQps
  169. aXRlcmFsID0gc3RyaW5nX2xpdGVyYWwNCgl8IGludGVnZXJfbGl0ZXJhbA0KCXwgcmVhbF9s
  170. aXRlcmFsDQoJfCBjc2V0X2xpdGVyYWwNCgkuDQoNCg==
  171. --------------D07FD781A7537D236717351D--
  172.  
  173.